package com.example.docmanagement.dto.request;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * 文件上传请求 DTO
 * 用于接收文件上传的额外参数
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class FileUploadRequest {

    /**
     * 文件类型
     * 可选值：image, document, avatar, cover, markdown
     * 如果不提供，根据 MIME 类型自动判断
     */
    private String fileType;

    /**
     * 关联的文档 ID（可选）
     * 用于图片、附件等需要关联到文档的文件
     */
    private Long documentId;

    /**
     * 是否压缩（仅图片）
     * 默认 true
     */
    private Boolean compress = true;

    /**
     * 是否生成缩略图（仅图片）
     * 默认 true
     */
    private Boolean generateThumbnail = true;

    /**
     * 访问策略
     * 可选值：public, private, authenticated
     * 如果不提供，根据 fileType 自动判断
     */
    private String accessPolicy;

    /**
     * 文件分类（业务分类）
     * 可选值：doc-image, doc-attachment, user-avatar, doc-cover
     */
    private String fileCategory;

    /**
     * 上传来源
     * 可选值：editor（Monaco 编辑器）、attachment（文档附件上传）、manual（手动上传）
     * 默认值：attachment
     * 用于区分文件的上传来源，决定是否允许删除
     */
    private String uploadSource = "attachment";
}

